package com.ruoyi.training.service;

import java.util.List;
import com.ruoyi.training.domain.FundPool;
import com.ruoyi.training.dto.payment.FundPoolCorrelationInfo;
import com.ruoyi.training.vo.payment.FundPoolVo;

/**
 * 资金池Service接口
 * 
 * @author hcc
 * @date 2025-09-28
 */
public interface IFundPoolService 
{
    /**
     * 查询资金池
     * 
     * @param fundPoolId 资金池主键
     * @return 资金池
     */
    public FundPool selectFundPoolByFundPoolId(String fundPoolId);

    /**
     * 查询资金池列表
     * 
     * @param fundPool 资金池
     * @return 资金池集合
     */
    public List<FundPool> selectFundPoolList(FundPool fundPool);

    /**
     * 新增资金池
     * 
     * @param fundPool 资金池
     * @return 结果
     */
    public int insertFundPool(FundPool fundPool);

    /**
     * 修改资金池
     * 
     * @param fundPool 资金池
     * @return 结果
     */
    public int updateFundPool(FundPool fundPool);

    /**
     * 批量删除资金池
     * 
     * @param fundPoolIds 需要删除的资金池主键集合
     * @return 结果
     */
    public int deleteFundPoolByFundPoolIds(String[] fundPoolIds);

    /**
     * 删除资金池信息
     * 
     * @param fundPoolId 资金池主键
     * @return 结果
     */
    public int deleteFundPoolByFundPoolId(String fundPoolId);

    /**
     * 出账
     */
    public int disbursement(FundPool fundPool);

    /**
     * 出账并合并发票
     */
    public int consolidateInvoice(FundPool fundPool);

    /**
     * 逻辑删除资金池
     */
    public int removeFundPool(String[] fundPoolIds);

    /**
     * 查询资金池列表
     */
    public List<FundPool> selectList(FundPoolVo fundPoolVo);

    // 通过交易号查询资金池
    public FundPool selectFundPoolByPoolTransactionNum(String poolTransactionNum);

    /**
     * 获取资金池关联报名信息
     */
    public FundPoolCorrelationInfo getFundPoolCorrelationInfo(String fundPoolId);
}
